<?php

if (!defined('BASEPATH')) {
    exit('No direct script access allowed');
}
global $data;

class Tutorials extends CI_Controller {

    public function __construct() {
        global $data;
        parent::__construct();
        //redireccion segura
        if ($this->session->userdata('access') != 'grant') {
            redirect(base_url());
        }
        $this->inicializarCampos();
        $data['place'] = 'tutorials';
        $this->stats();
    }

    public function stats() {
        global $data;
        $data['acceso'] = $this->ciempies_model->lista_accesos();
        $data['tcolab'] = $this->ciempies_model->get_total('COLABORADOR');
        $data['ttutorial'] = $this->ciempies_model->get_total('TUTORIAL');
        $data['therramienta'] = $this->ciempies_model->get_total('HERRAMIENTA');
        $data['tuso_herramienta'] = $this->ciempies_model->get_total('uso_herramienta');
        $data['tvisita'] = $this->ciempies_model->get_total('visita');
    }

    public function menu($opc) {
        global $data;

        $this->load->view('template/header', $data);
        $this->load->view('template/sidebar');
        switch ($opc) {
            case 'agregar':
                $this->load->view('tutoriales/content_alta');
                break;
            case 'modificar':
                $this->load->view('tutoriales/content_buscar');
                break;
        }
        $this->load->view('template/footer');
        $this->session->unset_userdata('form');
        $this->session->unset_userdata('mensaje');
    }

    public function _create_thumbnail($filename, $ratio, $destino) {
        $config['image_library'] = 'gd2';

        //CARPETA EN LA QUE ESTÁ LA IMAGEN A REDIMENSIONAR
        $config['source_image'] = 'assets/uploads/' . $filename;
        $config['create_thumb'] = FALSE;
        $config['maintain_ratio'] = $ratio;

        //CARPETA EN LA QUE GUARDAMOS LA MINIATURA
        $config['new_image'] = $destino;
        $config['width'] = 320;
        $config['height'] = 240;
        $this->load->library('image_lib');
        $this->image_lib->initialize($config);
        $this->image_lib->resize();
        //borramos la original

        unlink($config['source_image']);
    }

    public function publicarTutorial() {

        $notify_bad_open = '<div class="alert alert-error" style="margin-top: 16px;">
                        <button type="button" class="close" data-dismiss="alert">×</button>
                        <strong> Cuidado! </strong> ';
        $notify_good_open = '<div class="alert alert-success" style="margin-top: 16px;">
                        <button type="button" class="close" data-dismiss="alert">×</button>
                        <strong>Bien!</strong> ';


        //VALIDACION DE FORMULARIO
        $this->form_validation->set_rules('titulo_es', 'Titulo_español', 'required|trim|xss_clean');
        $this->form_validation->set_rules('contenido_es', 'Contenido_español', 'required|trim|xss_clean');
        $this->form_validation->set_rules('titulo_en', 'Titulo_ingles', 'required|trim|xss_clean');
        $this->form_validation->set_rules('contenido_es', 'Contenido_ingles', 'required|trim|xss_clean');
        $this->form_validation->set_rules('autor', 'Autor', 'required|trim|xss_clean');

        //DEFINIMOS MENSAJES DE ERROR
        $this->form_validation->set_message('required', 'Hay campos vacios');

        //GUARDAMOS LOS VALORES DEL FORMULARIO QUE FUERON ENVIADOS POR EL POST
        $data['titulo_es'] = $this->input->post('titulo_es');
        $data['contenido_es'] = $this->input->post('contenido_es');
        $data['titulo_en'] = $this->input->post('titulo_en');
        $data['contenido_en'] = $this->input->post('contenido_en');
        $data['autor'] = $this->input->post('autor');

        //CUANDO EL FORMULARIO ES ENVIADO, APLICAMOS LOS CRITERIOS DE EVALUACIÓN EN BUSCA DE ERRORES
        //SI FALLA ENTRA AL IF Y SE RECARGA LA PAGINA CON LOS ERRORES
        if (!($this->input->post('tutorialListo') && $this->form_validation->run())) {

            //OBTENEMOS LOS ERRORES DEL FORMULARIO
            $this->session->set_userdata('form', $data);
            $this->session->set_userdata('mensaje', $notify_bad_open . $this->form_validation->error('titulo_es') . '</div>');
            $this->session->set_userdata('mensaje', $notify_bad_open . $this->form_validation->error('contenido_es') . '</div>');
            $this->session->set_userdata('mensaje', $notify_bad_open . $this->form_validation->error('titulo_en') . '</div>');
            $this->session->set_userdata('mensaje', $notify_bad_open . $this->form_validation->error('contenido_es') . '</div>');
            $this->session->set_userdata('mensaje', $notify_bad_open . $this->form_validation->error('autor') . '</div>');
            redirect(base_url() . 'tutorials/menu/agregar');
        }
        //EL FORMULARIO PASA LA PRUEBA
        //PROCEDEMOS CON LA CARGA DE LA IMAGEN
        //CONFIGURACIONES DE LA CARGA
        $config['upload_path'] = './assets/uploads/';
        $config['allowed_types'] = 'gif|jpg|png|jpeg';
        $config['max_size'] = '2048';
        $config['max_width'] = '3000';
        $config['max_height'] = '3000';
        $config['overwrite'] = FALSE;
        $config['remove_spaces'] = TRUE;
        $config['encrypt_name'] = TRUE;
        $this->load->library('upload', $config);
        //SI LA IMAGEN FALLA AL SUBIR MOSTRAMOS EL ERROR EN LA VISTA UPLOAD_VIEW
        if (!$this->upload->do_upload('file_col')) {
            //OBTENEMOS EL ERROR DE CARGA DE IMAGEN Y RECARGAMOS
            $this->session->set_userdata('mensaje', $notify_bad_open . $this->upload->display_errors() . '</div>');
            $this->session->set_userdata('form', $data);
            redirect(base_url() . 'tutorials/menu/agregar');
        }

        //OBTENEMOS LOS DATOS DE LA IMAGEN Y LA PROCESAMOS
        $file_info = $this->upload->data();
        $this->_create_thumbnail($file_info['file_name'], FALSE, 'assets/uploads/tutoriales/');

        //METEMOS LA VARIABLES EN UN ARREGLO
        $tutorial = array('a' => $data['titulo_es'],
            'b' => $data['contenido_es'],
            'c' => $data['titulo_en'],
            'd' => $data['contenido_en'],
            'e' => $data['autor'],
            'f' => $this->session->userdata('responsableID'),
            'g' => $file_info['file_name']);

        //GUARDAMOS EL TUTORIAL
        $this->ciempies_model->guardarTutorial($tutorial);

        $this->session->set_userdata('mensaje', $notify_good_open . 'Tutorial Guardado</div>');
        redirect(base_url() . 'tutorials/menu/agregar');
    }

    private function inicializarCampos() {
        global $data;
        $data['responsableNombre'] = $this->session->userdata('responsableNombre');
        $form = $this->session->userdata('form');
        $data['titulo_es'] = $form['titulo_es'];
        $data['contenido_es'] = $form['contenido_es'];
        $data['titulo_en'] = $form['titulo_en'];
        $data['contenido_en'] = $form['contenido_en'];
        $data['autor'] = $form['autor'];
        $data['mensaje'] = $this->session->userdata('mensaje');
    }

    public function buscarTutorial() {
        $p = $this->input->post('tag');
        $data['tutorial'] = $this->ciempies_model->buscarTutorial($p);
        $this->load->view('tutoriales/lista_tutoriales', $data);
    }

    public function eliminarTutorial($key) {
        $filename = $this->ciempies_model->eliminarTutorial($key);
        unlink('assets/uploads/tutoriales/' . $filename->URL);
        $this->session->set_userdata('mensaje', '<div class="alert">
                                                <button type="button" class="close" data-dismiss="alert">×</button>
                                                <strong>Borrado</strong> terminado. </div>');
        redirect(base_url() . 'tutorials/menu/modificar');
    }

    public function modificarTutorial($id) {
        global $data;

        $tutorial = $this->ciempies_model->datosTutorial($id);

        $data['id'] = $tutorial->ID;
        $data['titulo_es'] = $tutorial->TITULO_ES;
        $data['contenido_es'] = $tutorial->CONTENIDO_ES;
        $data['titulo_en'] = $tutorial->TITULO_EN;
        $data['contenido_en'] = $tutorial->CONTENIDO_EN;
        $data['autor'] = $tutorial->AUTOR;
        $data['url'] = $tutorial->URL;


        //carga de vistas
        $this->load->view('template/header', $data);
        $this->load->view('template/sidebar');
        $this->load->view('tutoriales/content_edita');
        $this->load->view('template/footer');

        //reiniciamos las variables 
        $this->session->unset_userdata('mensaje');
    }

    public function actualizarTutorial() {

        $notify_bad_open = '<div class="alert alert-error" style="margin-top: 16px;">
                        <button type="button" class="close" data-dismiss="alert">×</button>
                        <strong> Cuidado! </strong> ';
        $notify_good_open = '<div class="alert alert-success" style="margin-top: 16px;">
                        <button type="button" class="close" data-dismiss="alert">×</button>
                        <strong>Bien!</strong> ';

        //VALIDACION DE FORMULARIO
        $this->form_validation->set_rules('titulo_es', 'Titulo_español', 'required|trim|xss_clean');
        $this->form_validation->set_rules('contenido_es', 'Contenido_español', 'required|trim|xss_clean');
        $this->form_validation->set_rules('titulo_en', 'Titulo_ingles', 'required|trim|xss_clean');
        $this->form_validation->set_rules('contenido_es', 'Contenido_ingles', 'required|trim|xss_clean');
        $this->form_validation->set_rules('autor', 'Autor', 'required|trim|xss_clean');

        //DEFINIMOS MENSAJES DE ERROR
        $this->form_validation->set_message('required', 'Hay campos vacios');

        //GUARDAMOS LOS VALORES DEL FORMULARIO QUE FUERON ENVIADOS POR EL POST
        $data['titulo_es'] = $this->input->post('titulo_es');
        $data['contenido_es'] = $this->input->post('contenido_es');
        $data['titulo_en'] = $this->input->post('titulo_en');
        $data['contenido_en'] = $this->input->post('contenido_en');
        $data['autor'] = $this->input->post('autor');
        $data['url'] = $this->input->post('url');
        $data['id'] = $this->input->post('id');

        //CUANDO EL FORMULARIO ES ENVIADO, APLICAMOS LOS CRITERIOS DE EVALUACIÓN EN BUSCA DE ERRORES
        //SI FALLA ENTRA AL IF Y SE RECARGA LA PAGINA CON LOS ERRORES
        if (!($this->input->post('actualizarListo') && $this->form_validation->run())) {

            //OBTENEMOS LOS ERRORES DEL FORMULARIO
            $this->session->set_userdata('form', $data);
            $this->session->set_userdata('mensaje', $notify_bad_open . $this->form_validation->error('titulo_es') . '</div>');
            $this->session->set_userdata('mensaje', $notify_bad_open . $this->form_validation->error('contenido_es') . '</div>');
            $this->session->set_userdata('mensaje', $notify_bad_open . $this->form_validation->error('titulo_en') . '</div>');
            $this->session->set_userdata('mensaje', $notify_bad_open . $this->form_validation->error('contenido_es') . '</div>');
            $this->session->set_userdata('mensaje', $notify_bad_open . $this->form_validation->error('autor') . '</div>');
            redirect(base_url() . 'tutorials/modificarTutorial/' . $this->input->post('id'));
        }
        //EL FORMULARIO PASA LA PRUEBA
        //PROCEDEMOS CON LA CARGA DE LA IMAGEN
        //CONFIGURACIONES DE LA CARGA
        $config['upload_path'] = './assets/uploads/';
        $config['allowed_types'] = 'gif|jpg|png|jpeg';
        $config['max_size'] = '2048';
        $config['max_width'] = '3000';
        $config['max_height'] = '3000';
        $config['overwrite'] = FALSE;
        $config['remove_spaces'] = TRUE;
        $config['encrypt_name'] = TRUE;
        $this->load->library('upload', $config);
        //SI LA IMAGEN FALLA AL SUBIR MOSTRAMOS EL ERROR EN LA VISTA UPLOAD_VIEW
        if (!$this->upload->do_upload('file_col')) {
            //OBTENEMOS EL ERROR DE CARGA DE IMAGEN Y RECARGAMOS
            $this->session->set_userdata('mensaje', $notify_bad_open . $this->upload->display_errors() . '</div>');
            $this->session->set_userdata('form', $data);

            if ($this->upload->display_errors() == '<p>You did not select a file to upload.</p>') {

                //LA IMAGEN ES LA MISMA, ACTUALIZAMOS LOS DEMAS CAMPOS
                //METEMOS LA VARIABLES EN UN ARREGLO
                $tutorial = array('a' => $data['titulo_es'],
                    'b' => $data['contenido_es'],
                    'c' => $data['titulo_en'],
                    'd' => $data['contenido_en'],
                    'e' => $data['autor'],
                    'f' => $data['url'],
                    'g' => $data['id']);
                $this->ciempies_model->actualizarTutorial($tutorial);

                $this->session->set_userdata('mensaje', $notify_good_open . 'Cambios guardados</div>');
                redirect(base_url() . 'tutorials/modificarTutorial/' . $this->input->post('id'));
            }
            redirect(base_url() . 'tutorials/modificarTutorial/' . $this->input->post('id'));
        }

        //OBTENEMOS LOS DATOS DE LA IMAGEN Y LA PROCESAMOS
        $file_info = $this->upload->data();
        $this->_create_thumbnail($file_info['file_name'], FALSE, 'assets/uploads/tutoriales/');

        //METEMOS LA VARIABLES EN UN ARREGLO
        $tutorial = array('a' => $data['titulo_es'],
            'b' => $data['contenido_es'],
            'c' => $data['titulo_en'],
            'd' => $data['contenido_en'],
            'e' => $data['autor'],
            'f' => $file_info['file_name'],
            'g' => $data['id']);
        $this->ciempies_model->actualizarTutorial($tutorial);

        //ELIMINAMOS LA IMAGEN
        unlink('assets/uploads/tutoriales/' . $data['url']);

        $this->session->set_userdata('mensaje', $notify_good_open . ' Tutorial Actualizado </div>');
        redirect(base_url() . 'tutorials/modificarTutorial/' . $this->input->post('id'));
    }

}
